<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

</body>

</html>
<script>
    console.log(
        '%c %c\n%c测试%cMr.James', `
  `, `
  `, `
  color: #f3f3f4;
  padding: 4px 3px 4px 11px;
  background-color: #FF3D45;
  border-radius: 5px 0 0 5px;
  `, `
  color: #5A94C1;
  padding: 4px 11px 4px 3px;
  background-color: #bfd3de;
  border-radius: 0 5px 5px 0;
`)



    /** 一、arguments 函数内部参数集合 伪数组（有下标，有长度，原型不指向Array,而是object  ArrayLike）
     * 类数组-->类似伪数组 转换成数组 
     * 方式：
     * 1、Array.from(arguments)最简单的转换成数组的方法
     * 2、Array.prototype.slice.call(arguments)
     * 3、for循环
     * 4、或者...
     */


    function sum(num1,num2) {//封装 思路：保证参数数据类型的一致，容错处理（稳定性）
        //数据类型判断
        Array.prototype.slice.call(arguments)
        let num = 0;
        for (let i = 0; i < arguments.length; i++) {
            num += arguments[i];
        }
        return num;
    }

    // dir 详细信息（最完整）
    // edir 详情信息（不全面）
    // error 控制台报错提示
    // time  计算信息发送的时间 搭配timeEnd截止 两者信息必须一致 切不可重复
    console.time('a');
    console.dir({});//对象
    console.dir([]);//数组
    console.log(sum(1));//1
    console.log(sum(1, 2));//3
    console.log(sum(1, 2, 3, 4));//10
    console.timeEnd('a');
</script>